Reference
- Python 공식 문서 - 7. Input and Output
개인적인 생각과 상상으로 작성한 내용들이 포함되어 있습니다
(본 내용에서 파일 입/출력은 생략하겠습니다)
조금 과장되게 말해서 파이썬에서 입력과 출력은 input()
함수와 print()
함수만 알면 끝입니다.
파이썬은 input()
함수를 통해 입력되는 모든 것을 string 자료형으로 통일시켜 마치 쌈 싸서 한 입에 먹는 것 처럼 처리합니다. (이 한 뭉텅이의 입력 데이터를 연산의 필요에 따라 int
, list
등의 다른 자료형으로 변환시키거나 특정 구분자로 split()
함수를 사용해 분리시키기도 합니다. 중요한건 들어올 때는 참 쉽다는 것입니다.)
어떻게 입력 받는지 보다 어떻게 출력 되는지가 더 중요하다는 것은 아닙니다. 하지만 ‘보기 좋은 떡이 먹기도 좋다’ 라는 속담이 있듯이 많은 사람들이 입력 보단 프로그램의 결과물인 출력 방법에 더 정성을 쏟는 것 같습니다.
String Formatting
- Python 3.8 공식 문서를 보면 3가지 방법이 소개 되어 있습니다.(manual formatting 생략)
Formatted String Literals
줄여서 f-strings 라고 불립니다. 파이썬 3.6 버전 이상부터 지원합니다.
문자열 ''
앞에 f
혹은 F
를 붙여서 사용하며 변수는 {}
안에 변수명으로 호출합니다.({}
안의 공간을 format field라고 부릅니다.)
|
{expression}
안에 :
뒤에 optional format specifier를 지정할 수 있습니다.
|
{}
안에서 기본적인 산술 연산이 가능합니다.
|
호출할 변수를 나중에 선언하는 것도 가능합니다.
|
str.format() Method
문자열 ''
뒤에 .format()
함수를 붙여 사용하는 방법입니다.
|
format()
함수 안에 있는 객체들이 format field 즉, {}
안의 내용으로 대입됩니다. Format field 안에 번호를 붙여줌으로 객체들의 순서를 바꿀 수도 있습니다.
|
Format field에는 숫자뿐만이 아니라 keyword 이름으로 넣을 수 있습니다.
|
Old string formatting
C 언어의 printf
방식과 비슷한 방법입니다.
데이터 타입에 맞춰서 %
뒤에 오는 문자를 지정해 줘야하고 가독성이 떨어지는 단점이 있습니다.
(int 타입이지만 %s
를 사용해도 왜 정상적으로 출력되는 이유를 잘 모르겠습니다ㅠ 반대로하면 TypeError: %d format: a number is required, not type 에러가 출력됩니다.)
|
비교
|
f-string: 0.22740733000000002 |
f-string 방식이 가장 빠른 것을 확인할 수 있습니다.
결론
Formatted String Literals 즉, f-string 사용을 권장합니다.